package com.station.Activitys.activity;

import android.os.Handler;
import android.view.View;
import android.widget.EditText;

import com.google.gson.Gson;
import com.station.Activitys.R;
import com.station.Activitys.activity.base.BaseActivity;
import com.station.Activitys.bean.User;
import com.station.Activitys.bean.pack.UserJsonPack;
import com.station.Activitys.http.manager.UserManager;
import com.station.Activitys.utils.Constant;
import com.station.Activitys.utils.JumperUtils;
import com.station.Activitys.utils.ToastUtils;

import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;

import butterknife.Bind;
import butterknife.OnClick;

/**
 * 项目名称：基站管理平台 手机app
 * 类描述：登录页面
 * 创建人：张飞祥
 * 创建时间：2018/8/27 13:42
 * 修改人：张飞祥
 * 修改时间：2018/8/27 13:42
 * 修改备注：
 */
public class LoginActivity extends BaseActivity {

    //用户名
    @Bind(R.id.et_login_name)
    EditText etLoginName;
    //密码
    @Bind(R.id.et_login_pwd)
    EditText etLoginPwd;

    //初始化网络请求
    public UserManager mApiManager;
    //TODO 获取保存 的 用户名密码
    //用户名
    private String mACacheLoginName = null;
    //密码
    private String mACacheLoginPwd = null;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_login);
        //网络请求接口 常驻方法
        mApiManager = mApiManager.getUserApiManager(LoginActivity.this, LoginActivity.this.getTaskId());
    }

    @Override
    protected void initData() {
        //TODO 获取用户名
        mACacheLoginName = mACache.getAsString(Constant.CACHE_LOGIN_NAME);
        //TODO 获取密码
        mACacheLoginPwd = mACache.getAsString(Constant.CACHE_LOGIN_PWD);

        //设置用户名
        if (mACacheLoginName!=null){
            etLoginName.setText(mACacheLoginName);
        }

        //设置密码
        if (mACacheLoginPwd!=null){
            etLoginPwd.setText(mACacheLoginPwd);
        }
    }

    /**
     * 按钮点击事件
     * @return
     */
    @OnClick({R.id.btn_login,R.id.tv_login_forget_pwd,R.id.tv_login_register})
    public void onClick(View view){
        switch (view.getId()){

            case R.id.btn_login:                 //登陆
                initHttpLogin();
                break;

            case R.id.tv_login_forget_pwd:       //忘记密码
                break;

            case R.id.tv_login_register:         //注册

                break;
        }
    }

    /**
     * 开始登录
     */
    private void initHttpLogin() {
        //用户名
        String name = etLoginName.getText().toString();
        //密码
        String pwd = etLoginPwd.getText().toString();

        //TODO 非空判断
        if (name.equals("")) {
            ToastUtils.showShort(LoginActivity.this, "请输入用户名");
        } else if (pwd.equals("")) {
            ToastUtils.showShort(LoginActivity.this, "请输入密码");
        } else {
            //显示加载窗
            initShowTimeDialog("正在登录，请稍候...", this);
            mApiManager.userLogin(name, pwd);
        }
    }

    /**
     * 响应 登录请求 出错
     */
    @Subscriber(tag = Constant.BUS_USER_LOGIN_ERROR)
    public void onLoginError(String strError) {
        //延时 1s
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //销毁弹窗
                mTimeDialog.dismiss();
                //弹出提示
                ToastUtils.showShort(LoginActivity.this, Constant.NETWORK_ERROR_MSG);
            }
        }, 1000);
    }

    /**
     * 加载 登录请求 返回结果
     */
    @Subscriber(tag = Constant.BUS_USER_LOGIN)
    public void onLogin(final UserJsonPack pack) {
        //延时 1s
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //销毁弹窗
                mTimeDialog.dismiss();
                //获取 当前 user
                User user = pack.getUserInfo();

                // 非空判断
                if (pack.getState().equals("1") && user != null) {

                    //获取当前用户身份
                    String type = user.getDepartmentType();

                    //当前用户身份判断 true：可以登录，false：不可以登录
                    if (type.equals(Constant.USER_UI) || type.equals(Constant.USER_GNERATION)){

                        //获取用户名
                        String loginName = etLoginName.getText().toString();
                        //获取密码
                        String loginPwd = etLoginPwd.getText().toString();
                        //TODO 保存当前 用户名 密码
                        //用户名
                        mACache.put(Constant.CACHE_LOGIN_NAME,loginName);
                        //密码
                        mACache.put(Constant.CACHE_LOGIN_PWD,loginPwd);

                        //TODO 用户id
                        mACache.put(Constant.CACHE_USER_ID, user.getId()+"");
                        //TODO 将当前用户实体存储在 本地
                        mACache.put(Constant.CACHE_USER, new Gson().toJson(user));
                        //TODO 将当前用户 所有数据 存储在 本地
                        mACache.put(Constant.CACHE_USER_PACK, new Gson().toJson(pack));
                        // 登录提示
                        ToastUtils.showShort(LoginActivity.this, "登录成功");
                        // 登录成功跳转到主页面
                        JumperUtils.JumpTo(LoginActivity.this, MainActivity.class);
                        //设置 极光推送 别名
//                        initPushAlias(user.getId()+"");
                        //更新页面数据
                        EventBus.getDefault().post("appPush",Constant.BUS_APP_PUSH);
                        //销毁当前页面
                        finish();
                    }else{
                        //身份错误提示
                        ToastUtils.showShort(LoginActivity.this,"当前用户身份信息不正确！");
                    }
                } else {
                    // 登录失败提示
                    ToastUtils.showShort(LoginActivity.this, pack.getMsg());
                }
            }
        }, 1000);
    }
}
